This document provides code examples demonstrating how to use the OpenJMS administration API.
In order to use the administration API, a JmsAdminServerIfc instance is required. This is obtained via the AdminConnectionFactory class:
import org.exolab.jms.administration.AdminConnectionFactory; import org.exolab.jms.administration.JmsAdminServerIfc; // ... String url = "tcp://localhost:3035/"; JmsAdminServerIfc admin = AdminConnectionFactory.create(url);
In the above, url specifies the URL of the OpenJMS server, and is connector specific. Refer to the connector documentation for more details.
If security is enabled, a valid user name and password must be supplied, e.g.:
String url = "tcp://localhost:3035/"; String user = "admin"; String password = "openjms"; JmsAdminServerIfc admin = AdminConnectionFactory.create(url, user, password);
Note: the admin reference should be closed when it is no longer needed, e.g.:
admin.close();
The following example shows how to list all administered destinations:
Vector destinations = admin.getAllDestinations(); Iterator iterator = destinations.iterator(); while (iterator.hasNext()) { Destination destination = (Destination) iterator.next(); if (destination instanceof Queue) { Queue queue = (Queue) destination; System.out.println("queue:" + queue.getQueueName()); } else { Topic topic = (Topic) destination; System.out.println("topic:" + topic.getTopicName()); } }
To create an administered queue named 'myqueue':
String queue = "myqueue"; Boolean isQueue = Boolean.TRUE; if (!admin.addDestination(queue, isQueue)) { System.err.println("Failed to create queue " + queue); }
To create an administered topic named 'mytopic':
String topic = "mytopic"; Boolean isQueue = Boolean.FALSE; if (!admin.addDestination(topic, isQueue)) { System.err.println("Failed to create topic " + topic); }
To determine the number of messages available in an administered queue named 'myqueue':
String queue = "myqueue"; int count = admin.getQueueMessageCount(queue); System.out.println("Queue " + queue + " has " + count + " messages");
To determine count the number of messages available in an administered topic named 'mytopic' for the subscriber 'sub1':
String topic = "mytopic"; String name = "sub1"; int count = admin.getDurableConsumerMessageCount(topic, name); System.out.println("Subscriber " + name + " has " + count + " messages " + "for topic " + topic);
To remove the administered destination 'myqueue':
String destination = "myqueue"; if (!admin.removeDestination(destination)) { System.err.println("Failed to remove destination " + queue); }